package br.pesquisa.lsystem;

public class Celula {

	private String letra;
	private Sentido sentido;

	public Celula() {
	}

	public Celula(String letra) {
		this.letra = letra;
	}

	public Celula(String letra, Sentido sentido) {
		this.letra = letra;
		this.sentido = sentido;
	}

	public String getLetra() {
		return letra;
	}

	public void setLetra(String letra) {
		this.letra = letra;
	}

	public Sentido getSentido() {
		return sentido;
	}

	public void setSentido(Sentido sentido) {
		this.sentido = sentido;
	}

	@Override
	public boolean equals(Object object) {
		if (this == object) {
			return true;
		}

		if (object instanceof Celula) {
			Celula that = (Celula) object;
			if ((letra == that.letra || (letra != null && letra.equals(that.letra)))
					&& sentido == that.sentido) {
				return true;
			}
		}

		return false;
	}

	@Override
	public int hashCode() {
		int result = 17;
		if(letra != null) {
			result += letra.hashCode();
		}
		if(sentido != null) {
			result += sentido.hashCode();
		}

		return result;
	}

	@Override
	public String toString() {
		return "[" + letra + ", " + sentido + "]";
	}

	public enum Sentido {
		esquerda, direita
	}
}
